package com.yzh.teacher.set;

import java.util.Set;
import java.util.TreeSet;

/**
 * 问题1：为什么HashSet、LinkedHashSet存储String是唯一的，但是存储Student不唯一了
 * <p>
 * 问题2：为什么TreeSet存储String是有序的，但是存储Student却报异常：
 * java.lang.ClassCastException: Student cannot be cast to Comparable
 * <p>
 * 原因：String是系统类，应该已经做了某些操作，Student是自定义类，某些操作还没有做
 * <p>
 * 问题1解决：重写equals()和hashCode()，缺一不可
 * <p>
 * 问题2：
 */
public class TestSet2 {
    public static void main(String[] args) {
        //创建set集合对象
//        Set<Student> set = new HashSet();
//        Set<Student> set = new LinkedHashSet();
        Set<Student> set = new TreeSet();
        //使用set存储多个学生信息
        Student stu1 = new Student(1, "zhangsan", "男", 24, 98);
        Student stu2 = new Student(2, "lisi", "男", 23, 87);
        Student stu3 = new Student(3, "wangwu", "男", 23, 98);
        Student stu4 = new Student(4, "zhangsan", "男", 23, 98);


        set.add(stu1);
        set.add(stu2);
        set.add(stu3);
        set.add(stu4);

        //遍历集合
        System.out.println(set.size());//??
        for (Student stu : set) {
            System.out.println(stu);
        }

    }
}
